Page({
  data: {
    showAuthButton: false, // 控制授权按钮显示
    currentDate: '2023-11-15',
    currentWeek: '星期三',
    todayPoints: 25,
    isCheckedToday: false,
    checkinPoints: 5,
    currentTab: 0 ,// 新增：当前选中的Tab索引（0=今日任务，1=任务管理，2=个人主页）
    taskList: [
      { id: 1, name: '晨间阅读', description: '阅读技术文章30分钟', points: 10, completed: false },
      { id: 2, name: '晨跑锻炼', description: '跑步3公里', points: 15, completed: true },
      { id: 3, name: '学习英语', description: '背诵20个单词', points: 10, completed: true },
      { id: 4, name: '代码练习', description: '完成一个小程序页面', points: 20, completed: false },
      { id: 5, name: '晚间复盘', description: '总结今日学习成果', points: 5, completed: false }
    ]
  },

  onLoad: function() {
    // 1. 优先检查登录状态
    this.checkLoginStatus();
  },
  // 获取用户信息（核心方法）
  getUserProfile() {
    const app = getApp();
    // 调用微信官方接口，获取用户信息（需用户主动点击触发）
    wx.getUserProfile({
      desc: '用于完善个人资料和展示头像昵称', // 必须说明用途（微信要求）
      success: (res) => {
        // res.userInfo 包含头像、昵称等信息
        const userInfo = res.userInfo;
        console.log("用户授权信息：", userInfo);

        // 1. 更新全局存储
        app.globalData.userInfo = userInfo;

        // 2. 提交到后端入库（携带token验证身份）
        this.submitUserInfoToBackend(userInfo);

        // 3. 隐藏授权按钮
        this.setData({ showAuthButton: false });
      },
      fail: (err) => {
        // 用户拒绝授权时的处理（可选：提示用户授权后体验更好）
        wx.showToast({
          title: '授权后可展示您的头像和昵称',
          icon: 'none',
          duration: 2000
        });
        console.log("用户拒绝授权：", err);
      }
    });
  },
  // 提交用户信息到后端
  submitUserInfoToBackend(userInfo) {
    const app = getApp();
    wx.request({
      url: `${app.globalData.baseUrl}/user/updateInfo`, // 后端接口
      method: 'POST',
      header: {
        'token': app.globalData.token, // 携带token，后端用于关联openid
        'Content-Type': 'application/json'
      },
      data: {
        nickname: userInfo.nickName, // 昵称
        avatar: userInfo.avatarUrl,  // 头像URL
        gender: userInfo.gender      // 性别（0-未知，1-男，2-女）
      },
      success: (res) => {
        if (res.data.code === 200) {
          wx.showToast({ title: '信息更新成功' });
        } else {
          wx.showToast({ title: '信息更新失败', icon: 'error' });
        }
      },
      fail: () => {
        wx.showToast({ title: '网络错误', icon: 'error' });
      }
    });
  },
  // 登录成功后触发（在之前的登录逻辑中添加）
  afterLoginSuccess() {
    // 登录成功后，检查是否已有用户信息，若无则显示授权按钮
    const app = getApp();
    if (!app.globalData.userInfo) {
      this.setData({ showAuthButton: true });
    } else {
      this.setData({ showAuthButton: false });
    }
    this.loadPageData();
  },
  // 检查登录状态
  checkLoginStatus() {
    const token = wx.getStorageSync('token');
    const app = getApp();

    if (token) {
      // 已有token，更新全局状态并加载页面数据
      app.globalData.token = token;
      this.loadPageData();
    } else {
      // 无token，发起微信登录
      this.wechatLogin();
    }
  },

  // 微信登录流程
  wechatLogin() {
    wx.showLoading({ title: '登录中...' });

    // 1. 获取微信登录凭证code
    wx.login({
      success: (loginRes) => {
        if (!loginRes.code) {
          wx.hideLoading();
          wx.showToast({ title: '登录失败', icon: 'error' });
          return;
        }

        console.log('loginRes:', loginRes);

        // 2. 调用后端接口换取token
        wx.request({
          url: getApp().globalData.baseUrl + '/user/login', // 替换为你的后端登录接口
          method: 'POST',
          data: { code: loginRes.code },
          success: (res) => {
            console.log('res:', res);
            console.log('res.data:', res.data);
            console.log('res.data.code:', res.data.code);
            console.log('res.data.data:', res.data.data);
            if (res.data.code === 0 && res.data.data) {
              // 3. 存储token（本地+全局）
              const token = res.data.data;
              wx.setStorageSync('token', token);
              getApp().globalData.token = token;

              // 4. 登录成功后加载页面数据
              this.loadPageData();

              this.afterLoginSuccess();
            } else {
              wx.showToast({ title: '登录失败', icon: 'error' });
            }
          },
          fail: () => {
            wx.showToast({ title: '网络错误', icon: 'error' });
          },
          complete: () => {
            wx.hideLoading();
          }
        });
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({ title: '登录失败', icon: 'error' });
      }
    });
  },

  // 加载页面数据（原有逻辑封装）
  loadPageData() {
    // 计算已完成任务数
    const completedCount = this.data.taskList.filter(task => task.completed).length;
    this.setData({
      completedCount,
      totalTasks: this.data.taskList.length
    });

    // 这里可以添加其他需要登录后加载的数据逻辑
    // 例如：从后端获取用户真实的任务列表、积分等
    // this.fetchUserTaskData();
  },

  // 处理签到
  handleCheckIn: function() {
    if (this.data.isCheckedToday) return;
    
    this.setData({
      isCheckedToday: true,
      todayPoints: this.data.todayPoints + this.data.checkinPoints
    });
    
    wx.showToast({
      title: `签到成功 +${this.data.checkinPoints}积分`,
      icon: 'success'
    });
  },

  // 完成任务
  completeTask: function(e) {
    const taskId = e.currentTarget.dataset.taskId;
    const taskIndex = this.data.taskList.findIndex(task => task.id === parseInt(taskId));
    
    if (taskIndex === -1 || this.data.taskList[taskIndex].completed) return;
    
    // 更新任务状态
    const taskList = this.data.taskList;
    taskList[taskIndex].completed = true;
    
    // 更新积分和完成数量
    const completedCount = this.data.completedCount + 1;
    const todayPoints = this.data.todayPoints + taskList[taskIndex].points;
    
    this.setData({
      taskList,
      completedCount,
      todayPoints
    });
    
    wx.showToast({
      title: `完成任务 +${taskList[taskIndex].points}积分`,
      icon: 'success'
    });
  },

  /**
   * 切换底部Tab
   * @param {*} e - 点击事件，携带index参数
   */
  switchTab(e) {
    const index = e.currentTarget.dataset.index;
    this.setData({
      currentTab: index
    });
  },
});